﻿#ifndef QNETWORKADAPTERINFOPROVIDER_H
#define QNETWORKADAPTERINFOPROVIDER_H

#include <QObject>
#include <QString>
#include <QVector>
#include <QByteArray>
#include <QNetworkInterface>

class QNetworkAdapterInfoProvider {
public:
    // 网卡详细信息结构体
    struct NetworkAdapterDetails {
        QString name;                  // 网卡名称（如"eth0"、"Wi-Fi"）
        QString description;           // 网卡描述（人类可读名称）
        quint32 index = 0;             // 接口索引（唯一标识）
        quint32 type = 0;              // 接口类型（如以太网、无线）
        quint64 mtu = 0;               // 最大传输单元 (MTU)
        QString macAddress;            // MAC地址（字符串形式，如"AA:BB:CC:DD:EE:FF"）
        quint64 speed = 0;             // 网卡速度（bps，如1Gbps=1000000000）
        bool isAdminUp = false;        // 管理状态（启用/禁用）
        QString operationalStatus;     // 操作状态
    };

    QNetworkAdapterInfoProvider() = default;
    ~QNetworkAdapterInfoProvider() = default;

    // 获取所有网卡详细信息
    QVector<NetworkAdapterDetails> getNetworkAdapters() const;

private:
#ifdef Q_OS_WIN
    // Windows平台实现（兼容旧版SDK）
    QVector<NetworkAdapterDetails> getNetworkAdaptersWindows() const;
#else
    // Linux平台实现
    QVector<NetworkAdapterDetails> getNetworkAdaptersLinux() const;
#endif
};

#endif // QNETWORKADAPTERINFOPROVIDER_H
